/**
 * 四海兄弟工作小组，群号:160517807
 * @author 乔继承
 * @date 2013年12月13日 下午8:46:48 
 * @version V1.0   
 */
package org.mcpro.common.util;

import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.mcpro.core.model.DictObject2field;

/**
 * <object> <!-- 字典对象值 --> <dictObjectValue> <tableName>idperson</tableName>
 * <values> <value fieldid="id" fieldsuiName="主键">10000</value> <value
 * fieldid="name" fieldsuiName="姓名">张三</value> </values> <values> <value
 * fieldid="id" fieldsuiName="主键">10001</value> <value fieldid="name"
 * fieldsuiName="姓名">李四</value> </values> </dictObjectValue> </object>
 * 
 * @author 乔继承
 * @date 2013年12月13日 下午8:46:48
 * 
 */
public class DocumentUtil {
	private Document document = getDocument();
	private Element element;
	/**
	 * 创建document对象
	 * 
	 * @return
	 * @author 乔继承
	 * @date 2013年12月13日 下午10:23:59
	 */
	public Document getDocument() {
		if (document == null) {
			return DocumentHelper.createDocument();
		}
		return document;
	}

	public void setDocument(Document document) {
		this.document = document;
	}

	public Element getElement() {
		return element;
	}

	public void setElement(Element element) {
		this.element = element;
	}
	/**
	 * 根据object的参数名称，创建根元素，默认的根元素为object
	 * 
	 * @param object
	 * @return
	 * @author 乔继承
	 * @date 2013年12月13日 下午10:24:19
	 */
	public Element createObject(String object) {
		Element root = null;
		if (object == null || "".equals(object.trim())) {
			root = document.addElement("object");
			return root;
		}
		root = document.addElement(object);
		return root;
	}
	/**
	 * 在document添加添加或更新表名，如果表名存在则更新表名，不存在则添加表名，
	 * 返回添加或更新的表名
	 * 
	 * @return
	 * @author 乔继承
	 * @date 2013年12月13日 下午10:34:44
	 */
	public Element addOrUpdateTableName(String name,String value){
		if(name==null||value==null){
			return document.getRootElement();
		}
		String dictValue="dictObjectValue";
		Element element=document.getRootElement();
		Element dictObjectValue=element.element(dictValue);
		if(dictObjectValue==null){
			dictObjectValue=element.addElement(dictValue);
		}
		Element tableName=dictObjectValue.element(name);
		if(tableName==null){
			tableName=dictObjectValue.addElement(name);
		}
		tableName.addText(value);
		return tableName;
	}
	
	public Element addOrUpdateValue(Map<Object, DictObject2field> map){
		if(map==null||map.size()<1){
			return null;
		}
		String dictValue="dictObjectValue";
		Element element=document.getRootElement();
		Element dictObjectValue=element.element(dictValue);
		if(dictObjectValue==null){
			dictObjectValue=element.addElement(dictValue);
		}
		List<Element> list=dictObjectValue.elements();
		Element values=null;
		Set<Entry<Object, DictObject2field>> set=map.entrySet();
		if(list==null||list.size()==0){
			for(Entry<Object, DictObject2field> entry : set){
				Object value= entry.getKey();
				DictObject2field field=entry.getValue();
			}
			//values=dictObjectValue.addElement(map.get(key))
		}
		return null;
	}


	/**
	 * 
	 * 
	 * @return
	 * @author 乔继承
	 * @date 2013年12月13日 下午8:48:39
	 */
	public static Document aa() {

		Document doc = DocumentHelper.createDocument();
		Element root = doc.addElement("object");
		doc.setRootElement(root);
		Element dictObjectValue = root.addElement("dictObjectValue");
		dictObjectValue.addElement("tableName").setText("idperon");
		Element values = dictObjectValue.addElement("values");
		Element valueid = values.addElement("value");
		valueid.setAttributeValue("fieldid", "id");
		valueid.setAttributeValue("fieldsuiName", "主键");
		valueid.setText("10000");

		Element valuename = values.addElement("value");
		valuename.setAttributeValue("fieldid", "name");
		valuename.setAttributeValue("fieldsuiName", "姓名");
		valuename.setText("张三");

		values = dictObjectValue.addElement("values");
		Element valueid1 = values.addElement("value");
		valueid1.setAttributeValue("fieldid", "id");
		valueid1.setAttributeValue("fieldsuiName", "主键");
		valueid1.setText("10001");

		Element valuename1 = values.addElement("value");
		valuename1.setAttributeValue("fieldid", "name");
		valuename1.setAttributeValue("fieldsuiName", "姓名");
		valuename1.setText("李四");

		System.out.println(doc.asXML());
		return doc;

	}

	/** 
	 * 
	 * @param dofs
	 * @author 乔继承
	 * @date 2013年12月22日 下午12:46:21
	*/ 
	public void addOrUpdateFields(List<DictObject2field> dofs) {
		// TODO Auto-generated method stub
		
	}
}
